package com.sz.biz.logistics.base.service;

import com.sz.biz.logistics.base.entity.Ship;
import com.sz.biz.logistics.base.dto.ShipDto;
import com.sz.common.base.dto.QueryParams;
import com.sz.common.base.dto.ResultDto;

import java.util.List;

/**
 * Function: ShipService <br>
 * Author: wentao.chang <br>
 * Date: 2017-08-04 15:47:00
 */
public interface ShipService {

    void refreshCache();

    /**
     * 新增船舶
     *
     * @param ShipDto ShipDto
     * @return int
     */
    int save(ShipDto ShipDto);

    /**
     * 修改船舶
     *
     * @param id id
     * @param ShipDto ShipDto
     * @return int
     */
    int update(Integer id, ShipDto ShipDto);

    /**
     * 根据ShipIds删除船舶
     *
     * @param ShipIds ShipIds
     */
    void deleteByIds(List<Integer> ShipIds);

    /**
     * 根据shipId查询船舶詳細信息
     *
     * @param ShipId ShipId
     * @return ShipDto
     */
    ShipDto findById(int ShipId);

    /**
     * 根据shipId查询船舶信息
     *
     * @param ShipId ShipId
     * @return Ship
     */
    Ship findSimpleById(int ShipId);

    /**
     * 根据shippingCompanyId查询船信息
     *
     * @param shippingCompanyId shippingCompanyId
     * @return Ship
     */
    List<Ship> findByCompanyId(int shippingCompanyId);

    /**
     * 根据条件分页查询船舶
     *
     * @return ResultDto
     */
    ResultDto findShipListPage(QueryParams params);

    /**
     * 根据条件分页查询船舶短接口
     *
     * @return ResultDto
     */
    ResultDto findShipShortListPage(QueryParams params);

    /**
     * 查询国际化数据
     *
     * @param params params
     * @return ResultDto
     */
    ResultDto findI18nByParam(QueryParams params);

    /**
     * @param nameEn nameEn
     */
    void checkShipNameEn(String nameEn, Integer id);

    /**
     * @param mmsi mmsi
     */
    void checkShipMMSI(String mmsi, Integer id);

    /**
     * @param imo imo
     */
    void checkImo(String imo, Integer id);
}
